#include "led.h"
#include "serial.h"
#include "system_timer.h"
#include "interrupt_handler.h"
#include "lib.h"
#include "asmcode.h"
#include "mem_test.h"
#include "scheduler.h"
#include "prozesse.h"
#include "memory_management.h"

#define PROCESSES 3 

//------------------------------------------------------------------------------
void start(){
    remap();
    init_yellow_led();
    init_red_led();
    init_green_led();
    
    //Bootsequenz
    switch_yellow_led_on();
    switch_red_led_on();
    switch_green_led_on();

    write("Willkommen bei Melvin Calvin 0.9801.\n Wenn Sie es Nernst meinen, fahren Sie fort:\n");
    
    //Kernspeicherverwaltung initialsieren
    write("Kernspeicherverwaltung wird initialisiert, bitte warten ...\n");
    write("*Musik*\n");
    kmem_init();
    write("Fertig!=)\n");
    
    //Prozessverwaltung initialisieren
    init_PCB(PROCESSES);
    printf("Adresse des PCBs: %x\n");
    init_Process((long)&writeA, 0);
    init_Process((long)&writeB, 1);
    init_Process((long)&writeC, 2);



    showRegisters(0);
    showRegisters(1);
    
    enableSWI();
    
    //write("Interrupts im AIC enabeln ... ");
    enableAICInterrupts();
    //write("Interrupts im AIC (hoffentlich) enabelt.\n");

    //write("Periodische Interrupts initialisieren ... ");
    initPeriodicInterrupts();
    //write("Periodische Interrupts (hoffentlich) initialisiert.\n");
    
    
    busywait(100000);
    
    //Schneller Speichertest
    //mem_test();
    
    while(1){
	
    
      writeA();
    }
}
//------------------------------------------------------------------------------


